// src/utils/auth.js

import request from "@/utils/request";

export const getUserInfo = () => {
    const userStr = localStorage.getItem('system-user')
    if (!userStr) return null

    const userInfo = JSON.parse(userStr)
    const now = new Date().getTime()

    // 检查是否过期
    if (now > userInfo.expires) {
        localStorage.removeItem('system-user')
        return null
    }

    return userInfo.user
}

export const setUserInfo = (user) => {
    // 获取当前存储的用户信息
    const currentUserInfo = getUserInfo()

    // 合并用户信息，确保学生信息的完整性
    const updatedUser = {
        ...currentUserInfo,
        ...user,
        // 如果是学生类型，保持学生信息的完整性
        studentInfo: user.userType === 5 || user.userType === 3 ? {
            ...(currentUserInfo?.studentInfo || {}),
            ...(user.studentInfo || {}),
            userId: user.id
        } : null
    }

    // 设置过期时间（1小时）
    const expires = new Date().getTime() + 60 * 60 * 1000

    // 保存更新后的信息
    const userInfo = {
        user: updatedUser,
        expires
    }
    localStorage.setItem('system-user', JSON.stringify(userInfo))
}

// 这是一个从后端获取学生信息的异步函数
const fetchStudentInfo = async (userId) => {
    const response = await request.get(`/sysUser/${userId}`);
    if (response) {
        return response.json(); // 返回获取到的学生信息
    } else {
        throw new Error('无法获取学生信息');
    }
}

export const removeUserInfo = () => {
    localStorage.removeItem('system-user')
}